// 定义OcrResult类
import {ElMessage} from "element-plus";

export class OcrResult {

    constructor(logId, wordsResultNum, wordsResult) {

        //返回的JSON数据中存在的数据
        this.logId = logId; // 唯一的log id，用于问题定位
        this.wordsResultNum = wordsResultNum; //识别结果数，表示words_result的元素个数
        this.wordsResult = wordsResult; // 识别结果数组


        //展示时需要的数据
        this.averageProbability = '' // 识别结果总的平均准确率
        this.htmlText = ''; // HTML格式的文本，用html展示文本
        this.detailText = ''; // 用一般变量展示文本
        this.copyText = ''; // 准备复制的文本

    }


    //解析JSON数据将数据先存进原有的变量中
    parseJson(res) {
        try {
            // 先获取到百度平台返回的Json数据
            const data = JSON.parse(res.data.data);
            // 获取到识别结果words_result数组并用wordsResult变量暂存

            //遍历data.words_result数组中的每个元素，为每个元素创建一个新对象，该对象包含两个属性：words和probability。然后，它将这些新对象收集到一个新数组wordsResult中。
            let wordsResult = data.words_result.map(item => ({
                words: item.words,
                probability: item.probability.average
            }));

            //获取words_result_num和log_id并暂存
            let wordsResultNum = data.words_result_num
            let logId = data.log_id;

            // 创建OcrResult实例
            //const ocrResult = new OcrResult(logId, wordsResult, wordsResultNum);
            this.wordsResult=wordsResult
            this.logId=logId
            this.wordsResultNum=wordsResultNum

            /*
            * 接下来处理需要的变量数据
            *
            * */


            // 计算所有平均概率的平均值
            let totalProbability = wordsResult.reduce((acc, item) => acc + item.probability, 0);
            this.averageProbability = totalProbability / this.wordsResultNum

            // 转换文本格式
            this.htmlText = this.wordsResult.map(item => `
    ${item.words}`).join('<br>') + `
<p><strong>准确率</strong>: ${this.averageProbability.toFixed(5) * 100}%</p>`;

            //写入detailText变量
            this.detailText = this.wordsResult.map(item => ` ${item.words}`).join('\n ');


            //写入copyText变量
            this.copyText = this.wordsResult.map(item => `${item.words}`).join('    ');


        } catch (error) {
            console.error('解析出错:', error);
            ElMessage({
                type: 'error',
                message: '数据解析出错，返回结果为空'
            })
            return null
        }
    }




}

